Multiple Input Multiple Output (MIMO) is a method for multiplying the capacity of a radio link using multiple transmit and receive antennas to exploit multipath propagation. MIMO has become an essential element of wireless communication standards including IEEE 802.11n, IEEE 802.11ac and Long Term Evolution (LTE). In modern usage, “MIMO” specifically refers to a practical technique for sending and receiving more than one data signal on the same radio channel at the same time via multipath propagation. MIMO can be sub-divided into three main categories, precoding, spatial multiplexing, and diversity coding.
In MIMO systems (sometimes also referred to as multi-antenna systems), a transmitter sends multiple streams by multiple transmit antennas. The transmit streams go through a channel having Nt*Nr paths between the Nt transmit antennas at the transmitter and Nr receive antennas at the receiver. Because of the Nt*Nr paths between the Nt transmit antennas and the Nr receive antennas such a channel may also be referred to as matrix channel. The receiver obtains the received signal (e.g., received signal vectors) by the multiple receive antennas and decodes the received signal (e.g., received signal vectors) into the original information from the transmitter side.
In MIMO systems it is desirable to use spatial diversity to increase the reliability of data transmission. However, often there is inter-symbol-interference due to the multiple streams. A system model that describes the input-output behavior of a MIMO system is given byr=Hs+νwhere H is the channel matrix of a frequency flat channel/narrowband flat fading channel between the transmitter and the receiver. The channel matrix H is assumed to be known at both the transmitter and receiver, i.e., perfect Channel State Information (CSI) is assumed. Further, ν is the noise term (noise vector), s is the transmitted signal (transmit vector), and r is the received signal (receive vector). Frequency flatness is common for well-localized pulses in frequency. Frequency flatness may be replaced with the channel estimate and the error may be included in the noise term ν (noise vector). One approach for transmitting over MIMO channels is to use Singular Value Decomposition (SVD). In SVD the signal s is a pre-coded version of the original signal s through multiplication by a unitary matrix V and a scaling matrix D which is diagonal:s=V·D·s 
A problem with the pre-coding approach above is that the pre-coded signal s does not have the same spectrum as the original signal s, which often leads to additional spectral leakage causing interference in the system.